package com.fa4j.third.file.service;

import com.fa4j.third.file.model.ThirdFileDownloadCmd;
import com.fa4j.third.file.model.ThirdFileRemoveCmd;
import com.fa4j.third.file.model.ThirdFileUploadCmd;
import com.fa4j.third.file.model.ThirdFileUrlCmd;
import jakarta.validation.Valid;

import java.io.InputStream;
import java.io.OutputStream;

public interface ThirdFileService {

    /**
     * 上传文件
     *
     * @param cmd         上传参文件参数
     * @param inputStream 上传文件输入流
     */
    void upload(@Valid ThirdFileUploadCmd cmd, InputStream inputStream);

    /**
     * 删除上传文件
     *
     * @param cmd 删除上传文件参数
     */
    void remove(@Valid ThirdFileRemoveCmd cmd);

    /**
     * 下载文件
     *
     * @param cmd          下载文件参数
     * @param outputStream 下载文件输出流
     */
    void download(@Valid ThirdFileDownloadCmd cmd, OutputStream outputStream);

    /**
     * 获取文件访问地址
     *
     * @param cmd 文件参数
     * @return 文件访问地址
     */
    String getFileUrl(@Valid ThirdFileUrlCmd cmd);
}
